package com.hsz.autotest.practice;

import com.hsz.autotest.mapper.Cat;
import com.hsz.autotest.mapper.Dog;
import com.hsz.autotest.mapper.Person;
import com.sun.org.apache.bcel.internal.generic.ARETURN;
import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XmlVisitor;

import javax.swing.plaf.BorderUIResource;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {



        /**
         * 调用类时，有无static的调用方式不同

       Students.say();//有static直接调用
    Students stu=new Students();//void必须new调用
    stu.say();
         */
        /**
         *

        //命令行传参
        for (int i = 0; i <args.length ; i++) {
            System.out.println(args[i]);

        }*/

        /**
         *

        //打印101-150之间的质数
        int count=0;
        outer:for(int i=101;i<150;i++){
            for(int j=2;j<i/2;j++){
                if(i%j==0){
                    continue outer;
                }
            }System.out.println(i+"");
        }*/


        /**
         *----------------- continue--------------
         * int i=0;
         *         while (i<100){
         *             i++;
         *             if(i%10==0){
         *                 System.out.println();
         *                 continue;
         *             }System.out.println(i);
         *         }
         *
         -------------break------------------

        int i=0;
        while (i<100){
            i++;
            System.out.println(i);
           if( i==30){
               break;
           }
        }*/


        /**
         * 遍历数组的元素

        int[] numbers={10,20,30};
        for(int i=0;i<3;i++){
            System.out.println(numbers[i]);
        }
        System.out.println("--------------");
        for(int x:numbers){
            System.out.println(x);
        }*/
        /**
         * 可变参数

        Demo01 demo01=new Demo01();
        demo01.test(1,2);
         */

        /**
         * 递归的内存溢出错误写法

        Demo01 demo01=new Demo01();
        demo01.test();
        */

        /**
         * 递归/重载


        System.out.println(f(4,5));
         /**计算器
         * 1.加减乘除的4个方法
         * 2.利用循环的switch进行用户交互
         * 3.传递需要操作的2个数
         * 4.输出结果

        //后台计算器

        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个数字");
        int num1=scanner.nextInt();
        System.out.println("请输入一个运算符：+、—、*、/");
        String c=scanner.next();
        System.out.println("请输入一个数字");
        int num2=scanner.nextInt();
        int result=0;
        switch (c){
            case "+":
                result=demo01.add(num1,num2);
                System.out.println(result);
                break;
            case "-":
                result=demo01.jianfa(num1,num2);
                System.out.println(result);
                break;
            case "*":
                result=demo01.chengfa(num1,num2);
                System.out.println(result);
                break;
            case "/":
                result=demo01.chufa(num1,num2);
                System.out.println(result);
                break;
            default:
                System.out.println("未按规则输入，请重新输入");
        }
         */
        /**
         * 寻找缺失的数据

    int[] a={3,0,1};
        Arrays.sort(a);
        int i = 0;
        for (; i <a.length; i++) {
            if (i != a[i]) {
                System.out.println(i);
                break;
            }

            }
        if(i==a.length){
            System.out.println(i);
        }
         */

//        int[] a={1,5,999,550};
//        System.out.println(a);
//        //打印数组元素
//        System.out.println(Arrays.toString(a));

        /**
         * 引用传递：对象，本质还是值传递


        Person person=new Person();
        System.out.println(person.name);

        Demo01.change(person);
        System.out.println(person.name);
    }

    public static void change(Person person){
        person.name="lili";//person是一个对象，指向---》Person person=new Person();这是一个具体的人，可以改变属性
    }
         */


/**
 * 值传递

int a=1;
        System.out.println(a);
        Demo01.change(a);
        System.out.println(a);
}

//返回值为空,值传递
    public static   void  change(int a){
        a=10;

    }
 */

    /**
     * 方法的定义

    public String sayHello(){
        return "hello";
}
public void hello(){
        return;
}

public int max(int a,int b){
        return a>b?a:b;
}

public void readFile(String file)throws IOException{

}
     */

    /**计算器
     * 1.加减乘除的4个方法
     * 2.利用循环的switch进行用户交互
     * 3.传递需要操作的2个数
     * 4.输出结果


        public static   int   add(int a,int b){
            int result=a+b;
           return result;
        }
    public static   int  jianfa(int a,int b){
        int result=a-b;
        return result;
        }
    public static   int  chengfa(int a,int b){
        int result=a*b;
        return result;
        }
    public static   int  chufa(int a,int b) {
        if (b == 0) {
            System.out.println("分母不能为0，请重新开始输入");
            return 0;
        }
            return a / b;

    }

     */



/**
 * 递归/重载
    public  static  int f(int n){
        if(n==1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }

    public  static  int f(int n ,int b){
        if(n==1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }*/





    /**
     * 递归的内存溢出错误写法

    public void test(){
        test();
    }
     */

/**
 * 可变参数
    public void test(int... i){
        System.out.println(i[0]);
        System.out.println(i[1]);
    }
 */

/**
 * 多态的例子

        Students s1=new Students();
        Person s2= new Students();//student继承了person
        Object s3=new Students();
        s2.run();
        s1.run();
        s1.eat();
        ((Students) s2).eat();
    }
 */
    Cat cat=new Cat();
        Dog dog=new Dog();
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符");

        String str=sc.next();
        if(str.equals("dog")){
            dog.shot();
        }else {

            cat.shot();
        }
    }


}


